package appStarshipPushups.common;

import java.awt.Dimension;
import java.awt.Point;

/**
 * Cette classe représente un laser dans le jeu. C'est le vaisseau
 * qui a la possibilité de l'activer.
 * @author Kevin Arsenault
 */
public class Laser 
{
	/**
	 * Ce membre représente les coordonnées du haut du laser.
	 */
	private Point startPoint = new Point();
	
	/**
	 * Ce membre représente les coordonnées du bas du laser.
	 */
	private Point endPoint = new Point();
	
	/**
	 * Ce membre représente le numéro d'identification du laser.
	 */
	private int id = 0;
	
	/**
	 * Ce membre représente la taille du laser.
	 */
	private Dimension size = null;
	
	/**
	 * Ce membre représente l'emplacement du vaisseau.
	 */
	private Emplacement laserEmplacement;
	
	/**
	 * Constructeur à paramètre laissant indiquer les coordonnées du laser.
	 * @param aStartX La position x de départ du laser.
	 * @param aStartY La position y de départ du laser.
	 * @param aEndX La position x de fin du laser.
	 * @param aEndY La position y de fin du laser.
	 */
	public Laser(int aStartX, int aStartY, int aEndX, int aEndY, int aID)
	{
		this.startPoint.x = aStartX;
		this.startPoint.y = aStartY;
		this.endPoint.x = aEndX;
		this.endPoint.y = aEndY;
		
		this.id = aID;
		
		this.size = new Dimension(aEndX - aStartX, aEndY - aStartY);
		
		this.laserEmplacement = new Emplacement(this.startPoint, this.endPoint);
	}
	
	/**
	 * Cette fonction permet d'obtenir la largeur du laser.
	 * @return La largeur du laser.
	 */
	public int getWidth()
	{
		return this.size.width;
	}
	
	/**
	 * Cette fonction permet d'obtenir la hauteur du laser.
	 * @return La hauteur du laser.
	 */
	public int getHeight()
	{
		return this.size.height;
	}
	
	/**
	 * Cette fonction permet d'obtenir la position du laser.
	 * @return La position du laser.
	 */
	public Point getPosition()
	{
		return this.startPoint;
	}
	
	/**
	 * Cette fonction permet d'obtenir le numéro d'identification du laser.
	 * @return Le numéro d'identification du laser.
	 */
	public int getID()
	{
		return this.id;
	}
	
	/**
	 * Cette fonction permet d'obtenir l'emplacement du laser.
	 * @return L'emplacement du laser.
	 */
	public Emplacement getLaserEmplacement()
	{
		return this.laserEmplacement;
	}
}
